home *** CD-ROM | disk | FTP | other *** search
/ The Business Master (3rd Edition) / The Business Master (3rd Edition).iso / files / business / popfrm11 / pfrm.exe / lzh / PF.DOC < prev    next >
Encoding:
Text File  |  1989-05-14  |  87.5 KB  |  2,017 lines

  1. TO:  INTEGRA COMPUTING, Box 72063, Marietta, GA  30007-2063
  2.  
  3.             Name __________________________________________________________
  4.        Firm Name __________________________________  Phone ________________
  5.          Address __________________________________________________________
  6.             City _________________  State ___  Zip _______  County ________
  7.  # Professionals _____  # Employees ____  Type of Practice ________________
  8. I first heard of Integra Computing from ___________________________________
  9. Prices and availability are subject to change without notice. 
  10.  
  11. Send unregistered** copies of the following:
  12. ___ copies of TickleX        at $10 ea                                   $_____
  13. ___ copies of MultiTrack     at $10 ea                                   $_____
  14. ___ copies of MOE            at $10 ea                                   $_____
  15. ___ copies of Nifty          at $10 ea                                   $_____
  16. ___ copies of LitigeX        at $10 ea                                   $_____
  17. ___ copies of BillPower      at $10 ea                                   $_____
  18. ___ copies of BillPower Plus at $15 ea                                   $_____
  19.  
  20. Send registered** copies of the following:
  21. ___ copies of MOE            at $50  [$25 w/TickleX/BillPower/MultiTrack]$_____
  22. ___ copies of Nifty          at $50  [$25 with ANY other program]        $_____
  23. ___ copies of PopForm        at $50  [$25 w/TickleX/BillPower/MultiTrack]$_____
  24. ___ copies of LitigeX        at $50  [+ $60  extra to get 1 hr support]* $_____
  25. ___ copies of TickleX        at $50  [+ $60  extra to get 1 hr support]* $_____
  26. ___ copies of MultiTrack     at $100 [+ $110 extra to get 2 hr support]* $_____
  27. ___ copies of BillPower      at $100 [+ $110 extra to get 2 hr support]* $_____
  28. ___ copies of BillPower Plus at $150 [+ $200 extra to get 4 hr support]* $_____
  29.  
  30. To have the programs supplied on 3.5" media,  please enclose $5.00 extra $_____
  31. If you don't live in the U.S., Canada, or Mexico, please add $10.00 more $_____
  32.  
  33.                                                              TOTAL ORDER $_____
  34.           ___% Sales Tax for ___________ county, if you're a GA resident $_____
  35.                                                     GRAND TOTAL ENCLOSED $_____
  36.  
  37. I have read and agree to all the terms of the Disclaimer found below.
  38.  
  39. _______________________________________                       _________________
  40. SIGNATURE                                                     DATE
  41.  
  42. *   Telephone support will be provided if you pre-purchase it with  this  order 
  43. form.  Such support must be used within a year.  When you need assistance,  you 
  44. may reach Integra Computing (404-973-3586) most weekdays from 4:30pm to 6:30pm, 
  45. Eastern Time.  Because so much time is required to respond to mailed correspon-
  46. dence,  letters requesting assistance may not be answered.  If you  need  help, 
  47. call  -- don't write.  But please don't even call unless  you've  pre-purchased 
  48. support  with this order form; if you call without having prepaid for  support, 
  49. each call will cost you a minimum of $15, plus $1 per minute.
  50. **  Unregistered  software is programmed to  remind  you to  register.   Please 
  51. note that no credit will be  given at the time of registration for the cost  of 
  52. an unregistered copy.
  53.      BILLPOWER,   TICKLEX, MULTITRACK, POPFORM, LITIGEX, MOE, NIFTY, AND  THEIR 
  54. INSTRUCTIONS  ARE PROVIDED  "AS  IS", WITHOUT WARRANTY OF ANY  KIND  (INCLUDING 
  55. THE  IMPLIED WARRANTIES OF MERCHANTABILITY  AND FITNESS FOR A  PARTICULAR  PUR-
  56. POSE).   NO ORAL OR WRITTEN INFORMATION  OR ADVICE  PROVIDED  BY  INTEGRA,  ITS 
  57. DEALERS,  DISTRIBUTORS, AGENTS,  OR  EMPLOYEES SHALL  CREATE A WARRANTY OF  ANY 
  58. KIND REGARDING BILLPOWER, TICKLEX, MULTITRACK, POPFORM, LITIGEX, MOE, OR NIFTY, 
  59. AND  YOU  MAY  NOT RELY UPON SUCH INFORMATION OR  ADVICE.
  60.      NEITHER  INTEGRA NOR ANYONE ELSE WHO HAS BEEN INVOLVED IN  THE   CREATION, 
  61. PRODUCTION,   OR DELIVERY OF BILLPOWER, TICKLEX, MULTITRACK, POPFORM,  LITIGEX, 
  62. MOE, OR NIFTY SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, OR INCI-
  63. DENTAL  DAMAGES (INCLUDING, BUT  NOT LIMITED  TO, DAMAGES FOR LOSS OF  BUSINESS 
  64. PROFITS,  BUSINESS  INTERRUPTION,  AND LOSS  OF  BUSINESS INFORMATION)  ARISING 
  65. FROM THE USE OF (OR INABILITY TO USE) BILLPOWER,  TICKLEX, MULTITRACK, POPFORM, 
  66. LITIGEX, MOE, OR NIFTY.
  67. -- LICENSE:
  68.      BillPower,  TickleX, MultiTrack, PopForm, LitigeX, Nifty, MOE,  and  their 
  69. documentation are  copyrighted in 1985 to 1989 by R.A. Kelly.  You may use  any 
  70. program on as many computers as you like, as long as it is never installed with 
  71. a SERIAL NUMBER (provided to you when you register as a user) on more than  one 
  72. computer at a time and as long as you do not alter the program in any way.  You 
  73. may distribute any of these programs to potential new users, provided that  you 
  74. never  divulge  your SERIAL NUMBER to anyone, that you charge no  fee  for  the 
  75. program, and that you do not bundle it with (or use it as an incentive to  pur-
  76. chase or  lease) any  other product or service, without the written consent  of 
  77. R.A. Kelly.  All rights not expressly granted above are reserved in R.A. Kelly.
  78.  
  79. -- DISCLAIMER:
  80.      BillPower,  TickleX, MultiTrack, PopForm, LitigeX, Nifty, and MOE may con-
  81. tain  design and  programming  flaws.  Before using ANY software on  a  regular 
  82. basis,  try estimating the potential harm that could result from your  reliance 
  83. upon  it.  Please don't use any of these programs unless you're willing to  as-
  84. sume  the  associated risks, such as billing and report inaccuracies  and  data 
  85. loss.
  86.  
  87.      BILLPOWER,   TICKLEX, MULTITRACK, POPFORM, LITIGEX, NIFTY, MOE, AND  THEIR 
  88. INSTRUCTIONS ARE PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND (INCLUDING THE 
  89. IMPLIED  WARRANTIES OF MERCHANTABILITY  AND FITNESS FOR A PARTICULAR  PURPOSE).  
  90. NO  ORAL OR WRITTEN INFORMATION  OR ADVICE  PROVIDED  BY INTEGRA, ITS  DEALERS, 
  91. DISTRIBUTORS,  AGENTS,  OR  EMPLOYEES SHALL  CREATE A WARRANTY OF ANY KIND  RE-
  92. GARDING  BILLPOWER, TICKLEX, MULTITRACK, POPFORM, LITIGEX, NIFTY, OR  MOE,  AND  
  93. YOU  MAY  NOT RELY UPON SUCH INFORMATION OR  ADVICE.   USE  OF  BILLPOWER, TIC-
  94. KLEX, MULTITRACK, POPFORM, LITIGEX, NIFTY, OR MOE IS ENTIRELY AT YOUR OWN RISK. 
  95.      NEITHER  INTEGRA NOR ANYONE ELSE WHO HAS BEEN INVOLVED IN  THE   CREATION, 
  96. PRODUCTION,   OR DELIVERY OF BILLPOWER, TICKLEX, MULTITRACK, POPFORM,  LITIGEX, 
  97. NIFTY, OR MOE SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, OR INCI-
  98. DENTAL  DAMAGES (INCLUDING, BUT  NOT LIMITED  TO, DAMAGES FOR LOSS OF  BUSINESS 
  99. PROFITS,  BUSINESS  INTERRUPTION,  AND LOSS  OF  BUSINESS INFORMATION)  ARISING 
  100. FROM  THE USE OF (OR INABILITY  TO  USE) BILLPOWER,  TICKLEX, MULTITRACK,  POP-
  101. FORM,  LITIGEX, NIFTY, OR MOE, EVEN THOUGH INTEGRA MAY BE ADVISED   THAT   SUCH 
  102. DAMAGES ARE POSSIBLE.
  103.  
  104. -- AGREEMENT:
  105.      As  used  in this Agreement, the terms "BillPower"  ,  "TickleX",  "Multi-
  106. Track",  "PopForm", "LitigeX", "Nifty", and "MOE", if not followed by a  series 
  107. or  version  designation, mean any version or series  of  BillPower,  BillPower 
  108. Plus, TickleX, MultiTrack, PopForm, LitigeX, Nifty, or MOE provided to you  now 
  109. or in the future.
  110.      Your   attempt  to use BillPower, TickleX, MultiTrack,  PopForm,  LitigeX, 
  111. Nifty, or MOE constitutes your  acceptance of the terms set forth in the  fore-
  112. going  LICENSE  and DISCLAIMER (which are incorporated  into  this  Agreement).  
  113. Your  attempt to use BillPower,  TickleX, MultiTrack, PopForm, LitigeX,  Nifty, 
  114. or MOE also constitutes your agreement that if you bring any legal action  rel-
  115. ating  to BillPower, TickleX, MultiTrack, PopForm, LitigeX, Nifty, or  MOE,  1) 
  116. your sole remedy for the damages for which any defendant is found liable  (inc-
  117. luding direct, indirect, incidental and consequential damages) will be the  re-
  118. covery  of whatever you paid to register as a  user of the program, and 2)  you 
  119. will  pay all defendants' attorneys fees  and other legal costs if you  do  not 
  120. prevail on all claims made in your pleadings.
  121.      The  terms of this Agreement are governed by Georgia law.  If any of  this 
  122. Agreement's  terms shall be held invalid to any extent, the remainder  of  this 
  123. Agreement shall be unaffected by such invalidity.
  124.  
  125.      THE ABOVE PARAGRAPHS CONSTITUTE THE ENTIRE AGREEMENT BETWEEN YOU AND INTE-
  126. GRA.  NO ORAL OR WRITTEN COMMUNICATION, INFORMATION, OR ADVICE FROM ANY  SOURCE  
  127. MAY ALTER THE AGREEMENT AS SET FORTH ABOVE.
  128.  
  129.      SOME STATES DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES OR OF LIABIL-
  130. ITY  FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO SOME OF THE  ABOVE  EXCLUSIONS  
  131. AND  LIMITATIONS  MAY NOT APPLY TO YOU.  YOU MAY HAVE OTHER  RIGHTS  WHICH  MAY 
  132. VARY FROM STATE TO STATE.
  133.  
  134.  
  135.  
  136.  
  137.                                   POPFORM
  138.                              TABLE OF CONTENTS
  139.  
  140.  
  141.  
  142.     INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
  143.  
  144.     USING POPFORM  . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
  145.  
  146.     FORMS OVERVIEW . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
  147.  
  148.     THE TILDE CODES. . . . . . . . . . . . . . . . . . . . . . . . . . . 11
  149.  
  150.     PUTTING IT ALL TOGETHER  . . . . . . . . . . . . . . . . . . . . . . 14
  151.  
  152.     FOR PROGRAMMERS ONLY . . . . . . . . . . . . . . . . . . . . . . . . 24
  153.  
  154.     PREPARING LONG FORMS . . . . . . . . . . . . . . . . . . . . . . . . 28
  155.  
  156.     COMMON ERRORS  . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
  157.  
  158.     COMPUTER CRASHES . . . . . . . . . . . . . . . . . . . . . . . . . . 30
  159.  
  160.     CUSTOMIZING POPFORM  . . . . . . . . . . . . . . . . . . . . . . . . 31
  161.  
  162.  
  163.  
  164.  
  165.                                    POPFORM
  166.                                  INSTRUCTIONS
  167.  
  168.  
  169.  
  170.  
  171.           PopForm is a ram-resident program that can be called up from 
  172.      within nearly any application, grab information from the screen, and 
  173.      merge it into a form that's being sent either to a printer or to a 
  174.      disk file.  
  175.  
  176.            PopForm's far more than just the perfect label/envelope printing 
  177.      tool.  You see, unlike the typical single-purpose label or envelope 
  178.      printer, PopForm is actually programmable.  It can execute subrou-
  179.      tines, perform comparisons and conditional procedures, and much, much 
  180.      more.  It'll even do simple page formatting, including margins all 
  181.      around, word wrap, page numbers, and one-line headers and footers.  
  182.  
  183.           With this program, you can prepare forms of nearly ANY complex-
  184.      ity, as long as the information to be plugged into them can be found 
  185.      on your computer's screen.  And, of course, provided that you're wil-
  186.      ling to grasp and implement some basic programming concepts.  If you 
  187.      have simple needs, you'll find PopForm a simple dream-come-true.  But 
  188.      it's nice to know that it also has the power to do heavy-duty chores, 
  189.      if you'll just take the time to do some programming and experimenting.
  190.  
  191.           Since PopForm can deal with numerical and string variables, it it 
  192.      can also be useful as you just browse through a database.  When you 
  193.      come to a screen containing information you'd like to record, just 
  194.      call up PopForm and select a "form" you've prepared that pulls sel-
  195.      ected data from the screen and sends it to a disk file, along with the 
  196.      running total for some important item.  When you've finished your 
  197.      browsing, you can either print the disk file or edit it with your word 
  198.      processor. 
  199.  
  200.  
  201.      INTRODUCTION
  202.  
  203.           All modern word processors have the ability to prepare forms.  
  204.      They can also automate the preparation of these forms through the use 
  205.      of merge-printing.  For instance, you can have your word processor 
  206.      read a list of addresses while it's printing a "blank" mailing label.  
  207.      As it does so, it will merge the address information into the blank 
  208.      form, resulting in a printed label containing an address. 
  209.  
  210.           This merge-printing function is a tremendous time saver, but it 
  211.      is useful only if the blank form and the information to be merged are 
  212.      both accessible by your word processor.  And, of course, your word 
  213.      processor's merge-printing function is available only if you're using 
  214.      the word processor.
  215.  
  216.           But what if it's your data base (or some other program), not your 
  217.  
  218.  
  219. INTRODUCTION                         4
  220.  
  221.  
  222.  
  223.  
  224.      word processor, that contains the information you want merged into a 
  225.      form?  Wouldn't it be nice if you could merge any information shown on 
  226.      your screen into forms that you can access on a pop-up basis?
  227.  
  228.           That's exactly what PopForm does.  It's a memory-resident program 
  229.      that will read any industry-standard ASCII file and send it to your 
  230.      printer, no matter what database, spreadsheet, word processor, etc., 
  231.      you may be using at the time.  And if the file being printed contains 
  232.      appropriate coding, PopForm will pick information right off your 
  233.      screen and merge it into the stream of data going to your printer.  
  234.      Hence, with PopForm, your SCREEN, not a disk file, provides the infor-
  235.      mation be merged into the form being printed.
  236.  
  237.           Let's say you have a canned letter that you'd like to send to 
  238.      a few of the hundreds of people whose vital information is kept in a 
  239.      data base file.  Just enter the data base and conduct a search for the 
  240.      records you think you may want.  As each person's record comes to the 
  241.      screen, you can decide whether you want to send the canned letter to 
  242.      him.  If so, press PopForm's hotkey, make sure that the correct form 
  243.      (the canned letter) is being accessed, and print it.  If you'd 
  244.      also/instead like to print a mailing label or a check, just select the 
  245.      appropriate form and merge-print it as well.  And if you have differ-
  246.      ent pre-printed forms already loaded into different printers, you can 
  247.      actually have PopForm automatically send each form it prepares to the 
  248.      proper printer.
  249.  
  250.           Let's assume that you're using BillPower Plus, Integra Comput-
  251.      ing's time/billing/bookkeeping program.  It includes a "People" module 
  252.      in which you can store thousands of names, addresses, birthdays, phone 
  253.      numbers, and lots of miscellaneous information.  Every person's data 
  254.      screen has a similar layout:  all the headings are the same, but the 
  255.      actual data differs from person to person.  Because each record's 
  256.      screen layout is predictable, you could easily write any number of 
  257.      forms to be used with the data contained in the BillPower's "People" 
  258.      module.  While a single record is being displayed, you could prepare a 
  259.      canned letter, a mailing label/envelope, and/or any other form you 
  260.      desire.
  261.  
  262.           In order to get you started, as well as to provide examples which 
  263.      you can study, PopForm is accompanied by several forms, among which 
  264.      are: 
  265.                a very simple form that demonstrates the program's 
  266.                  basic principles (LABEL.FRM);
  267.                a somewhat more complex form that produces envelopes 
  268.                  on HP Laser printers (HP-ENV.FRM);
  269.                a rather complex airbill form that demonstrates the use 
  270.                  of "IF" and "GOTO" conditional processing (FEDEX.FRM);
  271.                a form that demonstrates PF's ability to do page format-
  272.                  ting (WILL.FRM);
  273.                a form that demonstrates PF's use in keeping up with 
  274.                  running totals as you browse through a data base
  275.                  (TOTALS.FRM).
  276.  
  277.  
  278. INTRODUCTION                         5
  279.  
  280.  
  281.  
  282.  
  283.  
  284.      You'll also find a simple text editor (FORMED.EXE) that may be useful 
  285.      in designing simple forms.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337. INTRODUCTION                         6
  338.  
  339.  
  340.  
  341.  
  342.      USING POPFORM
  343.  
  344.           You should install PopForm into its own POPFORM directory on your 
  345.      hard disk.
  346.  
  347.           To use the program, you should first log into the directory con-
  348.      taining PopForm.  The reason you need to be in this directory is that 
  349.      PopForm will always look to the directory from which it's installed 
  350.      when it needs to find its forms.  No matter what directory you may 
  351.      subsequently be logged into when you're running other applications, 
  352.      PopForm will always look for its forms in the subdirectory from which 
  353.      it was loaded.
  354.  
  355.           Once you're in the correct directory, load the program by typing 
  356.      "pf" at the DOS prompt.  Once the program is in memory, you'll be re-
  357.      turned to the DOS prompt.  
  358.  
  359.           To call up PopForm from within any application, you need simply 
  360.      press the hotkey (ALT-F, unless you customize the program to recognize 
  361.      another).  PopForm will then display the names of all forms available 
  362.      for printing.  Type in the name of one, press the Enter key, and that 
  363.      form will be sent to the printer.  PopForm will then disappear from 
  364.      the screen until you invoke it again with the hotkey.
  365.  
  366.           The next time you press the hotkey, PopForm will remember the 
  367.      last form it printed.  To re-print that form, just press the Enter 
  368.      key.  If you need to change the form, do that first, and THEN press 
  369.      the Enter key.
  370.  
  371.           By default, PopForm assumes that you'll be sending your form to a 
  372.      printer attached to your computer's LPT1 port.  If your printer is 
  373.      attached to LPT2, you may press ALT-P to change the printer port.  
  374.      When you do, you'll notice that the port designation in the upper-
  375.      right of the PopForm box will change.  If you press ALT-P a second 
  376.      time, PopForm will be set to send the form to a disk file named "PCUE" 
  377.      (PrinterCUE).  Pressing ALT-P a third time will tell PopForm to send 
  378.      the form to a disk file named "TEXT" (you may subsequently use your 
  379.      word processor to edit this file and send it to a printer).  Pressing 
  380.      ALT-P a fourth time completes the circle and brings you back to LPT1. 
  381.  
  382.           If you've been sending a series of forms to the Printer Cue 
  383.      (PCUE), you may easily have that file printed just by pressing Ctrl-P.  
  384.      But before you press Ctrl-P, make sure that you've informed PopForm to 
  385.      stop sending its output to PCUE.  It doesn't make sense to send PCUE's 
  386.      contents to itself, so press ALT-P until the appropriate printer (LPT1 
  387.      or LPT2) appears in the upper-right.  THEN, press Ctrl-P to send the 
  388.      contents of the printer cue to the printer.
  389.  
  390.           To exit PopForm and return to your application without printing a 
  391.      form, press the ESC key.  To actually UNLOAD PopForm from memory (so 
  392.      that it will no longer be accessible by your pressing the hotkey), 
  393.      press ALT-X.  
  394.  
  395.  
  396. USING POPFORM                            7
  397.  
  398.  
  399.  
  400.  
  401.      FORMS OVERVIEW
  402.  
  403.           USING PopForm is a snap, but DESIGNING FORMS will be another mat-
  404.      ter until you become accustomed to it. 
  405.  
  406.           All forms used by PopForm must be located in the POPFORM direc-
  407.      tory (or whatever other directory you place PopForm into).  And each 
  408.      form must have the ".FRM" file name extension (eg: "label.frm", "let-
  409.      ter.frm", "check.frm").  
  410.  
  411.           Each form must have been prepared as an industry-standard ASCII 
  412.      file.  Most modern word processors can produce this type of file, but 
  413.      generally not unless you specifically request it.  If you don't speci-
  414.      fy an ASCII file, your word processor is likely to produce a file in 
  415.      it's proprietary format, which is unlike that used by all other word 
  416.      processors.  If you specify an ASCII file, however, PopForm and most 
  417.      other word processors will be able to read it.  So study your word 
  418.      processor's manual to learn how to produce ASCII files.
  419.  
  420.           Just in case your word processor makes it difficult for you to 
  421.      prepare ASCII files, PopForm is accompanied by a relatively simple 
  422.      text editor called FORMED.  It's handy for making small forms, but 
  423.      you'll probably need a full-featured word processor for the big ones.
  424.  
  425.           Each form will have several spots where you will want to substi-
  426.      tute information from the screen.  At each such spot, you must provide 
  427.      an appropriate code.  As PopForm reads the form file, it will encoun-
  428.      ter these codes and merge information from the screen at those spots.
  429.  
  430.           A PopForm code always BEGINS and ENDS with a tilde (~).  There 
  431.      are several types of codes that may be placed between the two tildes, 
  432.      the most commonly used of which is the Screen Specification.  When 
  433.      PopForm encounters a Screen Specification, it will read the screen 
  434.      positions specified and perform whatever process the tilde code dir-
  435.      ects.  If the tilde code contains NOTHING BUT a Screen Specification 
  436.      (that is, no other directive except, perhaps, a Write Length), PopForm 
  437.      will simply send the data extracted from the screen to the printer.  
  438.      If, however, the tilde code directs PopForm to do some sort of compar-
  439.      ison or mathematical operation with the the screen data, the approp-
  440.      riate operation will be performed without anything being sent to the 
  441.      printer.  So, if you want to send screen data to the printer, all you 
  442.      have to do is to place a Screen Specification between two tildes.  If 
  443.      the tilde code has any other directives (other than a Write Length), 
  444.      nothing will be written. 
  445.  
  446.           A Screen Specification is enclosed within parentheses, and it 
  447.      consists of two parameters, each separated by a comma:  1) either a 
  448.      keyword or a screen location, and 2) the Read Length (number of char-
  449.      acters to read from the screen).  If the Read Length is specified as 
  450.      zero, (or omitted altogether) PopForm will read to the end of the 
  451.      FIRST WORD, regardless of its length, and then stop reading.  
  452.      Examples:
  453.  
  454.  
  455. FORMS OVERVIEW                           8
  456.  
  457.  
  458.  
  459.  
  460.  
  461.                 ~("Name: ",20)~    tells PopForm to find "Name: " on the
  462.                                    screen, read the next 20 characters, and
  463.                                    print them.
  464.                 ~("Name: ")~       tells PopForm to find "Name: " on the
  465.                                    screen, read the next word, and print it.
  466.  
  467.           Another type of data that is frequently used is the Write Length, 
  468.      which informs PopForm how many characters to write to the printer.  It 
  469.      may be used in conjunction with a Screen Specification or any other 
  470.      tilde code that will result in something being sent to the printer.  
  471.      If the Write Length is smaller than the length of the information 
  472.      to be written, that information will be truncated.  If the Write 
  473.      Length is greater than the data length, PopForm will add extra spaces 
  474.      (padding) at the end of the data.  A write length of zero (or no Write 
  475.      Length specification at all) will tell PopForm to write exactly as 
  476.      many characters as are contained in the data to be written, no more 
  477.      and no less.
  478.  
  479.           A Write Length is always enclosed in square brackets.  If it's 
  480.      used, it should be placed within the tilde code before the the item 
  481.      specified to be written, such as a Screen Specification (which, remem-
  482.      ber, is placed within parentheses, not brackets). 
  483.  
  484.             ~[30]("Name: ",20)~    tells PopForm to find "Name: " on the
  485.                                    screen, read the next 20 characters, 
  486.                                    print them, and then add another 10 
  487.                                    blank spaces.
  488.  
  489.           Take a look at the LABEL.FRM file provided with PopForm.  It's a 
  490.      very simple example of the use of screen specifications.
  491.  
  492.  
  493.      - Screen layouts 
  494.  
  495.           Of course, Screen Specifications are useful only if you know the 
  496.      screen arrangement with which a particular form will be used.  There-
  497.      fore, each form you prepare with your word processor will assume a 
  498.      certain screen layout.  You can have a separate form for each type of 
  499.      layout you anticipate being displayed at the time the form is needed.  
  500.      Similarly, you can have many types of forms set up for each individual 
  501.      layout.
  502.  
  503.           Some sample forms are provided with PopForm.  Also provided is a 
  504.      file called TESTDATA.  Each of the provided forms (except the will) is 
  505.      designed to work with TESTDATA, which may be viewed as a sample data 
  506.      base screen.  If you'll look at TESTDATA, you'll see that information 
  507.      is arranged haphazardly on the screen.  This unusual layout is pro-
  508.      vided just to demonstrate that PopForm will find data, no matter where 
  509.      it has been strewn onto the screen.  If you're likely to use PopForm 
  510.      with a number of different main applications, you'll appreciate the 
  511.      fact that PopForm will find the data you want, no matter where it's 
  512.  
  513.  
  514. FORMS OVERVIEW                           9
  515.  
  516.  
  517.  
  518.  
  519.      displayed.
  520.  
  521.           Now look at CHECK.FRM.  This is a check that has been designed 
  522.      for use with Epson-compatible printers.  One of that file's codes is
  523.  
  524.                                ~[25]("payee: ",25)~
  525.  
  526.           This tilde code contains both a Write Length and a Screen Specif-
  527.      ication.  It tells PopForm to look for the character sequence, 
  528.      "payee: ", on the screen.  When it finds that sequence, PopForm should 
  529.      then read the NEXT 25 characters and then print 25 (all of them, in 
  530.      this case) of those characters before reading and printing anything 
  531.      else from the CHECK.FRM file.  If your screen happens to be displaying 
  532.      anything (such as TESTDATA) with the sequence, "payee: ", the approp-
  533.      riate substitution will take place.
  534.  
  535.           Remember, unlike other types of data that can be placed within 
  536.      tilde codes, Screen Specifications are enclosed in parentheses, and 
  537.      Write Lengths are enclosed within square brackets.  Examples: 
  538.  
  539.           ~"payee: ",25~      NO - Screen Specifications must be in parens
  540.           ~("payee: ",10)~    ok - looks for "payee: ", reads 10 charac-     
  541.                                    ters, writes all 10, since no Write
  542.                                    Length given
  543.           ~15("payee: ",25)~  NO - Write Lengths must be in brackets
  544.           ~[9]("payee: ",25)~ ok - reads 25 characters, writes 9 of them
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573. FORMS OVERVIEW                           10
  574.  
  575.  
  576.  
  577.  
  578.      THE TILDE CODES
  579.  
  580.           Though the Screen Specifications and Write Lengths covered in the 
  581.      last section are the codes you will most frequently use, there are 
  582.      other things you may specify with tilde codes.  Each will be described 
  583.      in detail later, but here's a brief explanation of each:
  584.  
  585.                DATE   Read today's date from the computer's memory, not 
  586.                         the screen, and send it to the printer.
  587.             WEEKDAY   Read today's weekday from the computer's memory, 
  588.                         not the screen, and send it to the printer.
  589.                TIME   Read the current time from the computer's memory, 
  590.                         not the screen, and send it to the printer.
  591.             NEWPAGE   Tells PopForm to send a form feed instruction to the
  592.                         printer, so that a new sheet of paper will be fed.
  593.     MARGINS t,l,b,r   Sets each printed page's top, left, bottom, and right 
  594.                         margins to t,l,b, and r, respectively.
  595.              HD x,y   PopForm will place header y at the top of each page
  596.                         it prints and then print x blank lines. 
  597.              FT x,y   PopForm will place footer y at the bottom of each page
  598.                         it prints and ensure that there are x blank lines
  599.                         between it and the preceding text.
  600.             WRAP ON   Turns word wrap on.  When ON, Popform will ignore all
  601.                         carriage returns in the form being printed and 
  602.                         determine for itself when to issue a carriage return.
  603.            WRAP OFF   Turn word wrap off.
  604.                   <   ~<~ forces a carriage return and line feed, whether
  605.                         or not word wrap is on.
  606.                   +   If ~+~ is the last thing on a line, it tells PopForm 
  607.                         to join that line with the following one.  No line 
  608.                         feed or carriage return will be sent to the printer 
  609.                         between these two lines.
  610.                   \   If ~\~ is the last thing on a line, it tells Popform 
  611.                         that the following line is to overprint the current
  612.                         one.  Therefore, a carriage return, but no line
  613.                         feed, will be sent to the printer between the two
  614.                         lines.
  615.            CENTER x   Tells PopForm to center all items picked from the 
  616.                         screen.  Each item will be centered on column x.
  617.                         Centering will continue until a CENTER OFF code 
  618.                         is encountered.
  619.          CENTER OFF   Turns off centering.   
  620.         PRINTCODE x   Send printer control decimal code x to the printer.
  621.                C-cc   Go to column cc on the row where the cursor is 
  622.                         currently located and start reading (cc must be
  623.                         2 digits). Whatever is found there will be printed.
  624.                R-rr   Go to row rr on the screen and start reading at 
  625.                         the column where the cursor is presently located
  626.                         (rr must be 2 digits).  Whatever is found there
  627.                         will be printed.
  628.             RC-rrcc   Go to row rr and column cc and start reading (rr
  629.                         and cc must each be 2-digit numbers).  Whatever is
  630.  
  631.  
  632. THE TILDE CODES                          11
  633.  
  634.  
  635.  
  636.  
  637.                         found there will be printed.
  638.           WRITELN x   Display message x in PopForm's box.  If nothing is 
  639.                         already displayed, the message will be located on 
  640.                         the top line; otherwise, it will be put onto the 
  641.                         second line.  Only two lines can be displayed at 
  642.                         one time.
  643.             INPUT x   Prompt the user for keyboard input by displaying                    
  644.                         message x.  Whatever the user keys in will be 
  645.                         sent to the printer, except for a carriage return.
  646.         NEWSCREEN x  Tells PopForm to display message x, wait for you to 
  647.                         press a key, and then temporarily exit.  This allows 
  648.                         you to call up another screen of data before for 
  649.                         the current form to use.  When you re-enter PopForm, 
  650.                         it will pick up where it had left off just before 
  651.                         exiting.  If x is missing, PopForm will exit without 
  652.                         displaying a message.
  653.             LABEL x   Marks a position within the file.  "x" is the 
  654.                         number or short word you wish to assign to the 
  655.                         position.
  656.              GOTO x   Stop printing and skip to the position in the form
  657.                         defined by label x.  Then, begin printing again.
  658.             GOSUB x   Like GOTO, but will cause PopForm to automatically
  659.             RETURN     pick up where it left off before performing the 
  660.                         subroutine beginning at label x and ending with a
  661.                         RETURN command.
  662.       DO              Defines a DO loop that contains everything between
  663.       UNTIL COUNT x     the "DO" and "UNTIL COUNT x" statements.  The
  664.                         DO loop will be repeated x times.
  665.                NUMx   PopForm keeps 9 numerical variables to which you 
  666.                         may assign values.  They are called NUM1...NUM9.  
  667.                         Each always starts with a value of zero when a new 
  668.                         form is being prepared, but you may alter them 
  669.                         through addition, subtraction, multiplication, 
  670.                         division, and clearing ( +, -, *, /, cc ).
  671.                WRDx   PopForm keeps 9 alphanumeric variables to which you 
  672.                         may assign characters strings.  They are called 
  673.                         WRD1...WRD9.  Each always starts out blank when a 
  674.                         new form is being prepared, but you may alter them 
  675.                         through addition, subtraction, and clearing 
  676.                         ( +, -, cc ).
  677.                 ESC   This is the character that results when the ESC key
  678.                         is pressed.  It may be used when making comparisons
  679.                         in an IF statement (eg: IF the ESC key is pressed, 
  680.                         then do so-and-so).
  681.          DECIMALS x   Defines the precision with which each NUM variable will
  682.                         be printed.  x is the number of decimal places 
  683.                         desired.
  684.            SENDTO x   Send the form to a disk file named x, instead of to 
  685.                         your primary printer.  If you want to send the form 
  686.                         to another PRINTER (not a file), x should be "LPT1",
  687.                         "LPT2", "LPT3", or "LPT4".
  688.              FILE x   Go to disk file x and print it.  The file must be 
  689.  
  690.  
  691. THE TILDE CODES                          12
  692.  
  693.  
  694.  
  695.  
  696.                         located in the same directory as PopForm's other 
  697.                         form files.  Be sure to specify a full file name, 
  698.                         including the extension.
  699.              IF x >   If number x is greater than the number defined by the 
  700.                         following keyword (or screen coordinates), then 
  701.                         execute the next tilde code sequence.  Otherwise, 
  702.                         DO NOT execute the next tilde code sequence.
  703.              IF x <   If number x is less than the number defined by the 
  704.                         following keyword (or screen coordinates), then 
  705.                         execute the next tilde code sequence.  Otherwise, 
  706.                         DO NOT execute the next tilde code sequence.
  707.              IF x =   If phrase x is contained within the phrase defined by 
  708.                         the following keyword (or screen coordinates), then 
  709.                         execute the next tilde code sequence.  OR, if 
  710.                         number x is the equivalent of the number defined by 
  711.                         the following keyword (or screen coordinates), then 
  712.                         execute next tilde code. 
  713.             IF x <>   If phrase x is not contained within the phrase defined 
  714.                         by the following keyword (or screen coordinates), 
  715.                         then execute the next tilde code sequence.  OR, if 
  716.                         number x is not the equivalent of the number defined
  717.                         by the following keyword (or screen coordinates), 
  718.                         then execute next tilde code. 
  719.     IF x ^ a,b,c...   If number x equals number a, b, or c, etc., then 
  720.                         execute next tilde code. 
  721.     IF x | a,b,c...   If number x does not equal number a, b, or c, etc., 
  722.                         then execute next tilde code. 
  723.               { x }   A tilde code containing nothing but comments enclosed 
  724.                         within curly brackets will be ignored by PopForm.
  725.                         You may use this feature to document your forms,
  726.                         without having to worry about your comments' being 
  727.                         printed. 
  728.  
  729.  
  730.  
  731.  
  732.  
  733.  
  734.  
  735.  
  736.  
  737.  
  738.  
  739.  
  740.  
  741.  
  742.  
  743.  
  744.  
  745.  
  746.  
  747.  
  748.  
  749.  
  750. THE TILDE CODES                          13
  751.  
  752.  
  753.  
  754.  
  755.      PUTTING IT ALL TOGETHER
  756.  
  757.  
  758.      - In General
  759.  
  760.           A simple form can be slapped together in no time.  A mailing 
  761.      label is a good example.  As your needs become more complex, however, 
  762.      you'll find yourself using PopForm's programming features to flash 
  763.      prompts onto the screen, compare screen data with other information, 
  764.      perform subroutines, etc.  A complex form could conceivably take many 
  765.      hours (even days) to develop.  Telling PopForm when to print what, and 
  766.      on which line to print it may be tricky.  But it CAN be done with some 
  767.      perseverance.  So please study the remainder of this manual and de-
  768.      velop some practice forms, so that you can experiment with each of 
  769.      PopForm's specialized codes.  Good luck.  
  770.  
  771.  
  772.      - Keywords and Screen Locations
  773.  
  774.           If the data you want to insert in your form always follows a par-
  775.      ticular keyword, screen coordinates aren't important;  PopForm will 
  776.      find the data, no matter where it may appear on the screen if you 
  777.      supply it with the keyword (eg: "Street: ").  
  778.  
  779.           PopForm is not case sensitive when it's scanning the screen for a 
  780.      keyword you've supplied.  That is, capitalization doesn't make any 
  781.      difference to PopForm when it's looking for a keyword.  But what it 
  782.      sends to the printer will be EXACTLY what is found on the screen fol-
  783.      lowing the keyword.
  784.  
  785.           An alternative to a keyword search is to specify the exact screen 
  786.      coordinates where the data you want may be found.  Screen coordinate 
  787.      numbering begins in the upper left corner, whose coordinate is "0101" 
  788.      (row 01, column 01).
  789.  
  790.           Let's assume that you have your data arranged in an array (a 
  791.      spreadsheet, for instance), and that there are no predictable key-
  792.      words.  Wouldn't it be nice to be able to move the cursor to a speci-
  793.      fic row and merge the data on that row into your form?  
  794.  
  795.           The "C-cc" code does just that.  The "cc" portion of the code 
  796.      specifies the COLUMN (two digits, please) at which the data you want 
  797.      to merge begins.  The ROW is defined as that where the cursor was lo-
  798.      cated just before popping into PopForm.  Take a look at RPRTCARD.FRM, 
  799.      a simple report card whose data also happens to be taken from the 
  800.      TESTDATA file.  You'll note that the "Grade" item is on the line 
  801.      following "Student".  But when it prints out, you'll notice that both 
  802.      items are on the same line (see the "line overwrites" discussion in a 
  803.      subsequent section).
  804.  
  805.           To use the RPRTCARD form, use your word processor to bring TEST-
  806.      DATA to the screen.  Then cursor down to any of the lines containing 
  807.  
  808.  
  809. PUTTING IT ALL TOGETHER                  14
  810.  
  811.  
  812.  
  813.  
  814.      student names.  Pop into PopForm, select the RPRTCARD form, and press 
  815.      the Enter Key.  That line's data will be merged into the form.  Select 
  816.      another student, and try again, if you like.
  817.  
  818.           The "R-rr" code works the same sort of magic for rows.  Here, 
  819.      the "rr" portion of the code specifies the ROW (two digits) at which 
  820.      the data you want to merge begins.  The COLUMN is defined as that 
  821.      where the cursor was located just before popping into PopForm.
  822.  
  823.           What if you want to specify an exact row and column, neither of 
  824.      which depends upon cursor location?  Answer: the "RC-rrcc" code.  
  825.      Here, both the row ("rr") AND column ("cc") are specified, each in two 
  826.      digits.
  827.  
  828.           Remember, Read and Write Lengths of zero have special meanings.  
  829.      A Read Length of zero normally tells PopForm that the number of char-
  830.      acters to be read is not important, and that PopForm should, instead, 
  831.      read to the end of the FIRST WORD, regardless of its length.  A Write 
  832.      Length of zero tells PopForm to print the string of characters you 
  833.      desire (such as a date found in the computer's memory, or several 
  834.      words picked from the screen), no more and no less.
  835.  
  836.  
  837.      - Line Overwriting and Line Joining  (VERY, VERY IMPORTANT!)
  838.  
  839.           These two features are invaluable.  Read, practice, and master 
  840.      the contents of this section!
  841.  
  842.           As you prepare forms with your word processor, you'll find that 
  843.      estimating the proper spacing is sometimes difficult, especially if 
  844.      you intend to be printing upon typeset paper.
  845.  
  846.           You may find that the tilde codes you enter are so long that they 
  847.      distort the appearance of the form on your screen.  Assume, for ins-
  848.      tance, that the data you want printed is only 6 characters long, but 
  849.      that it takes 13 characters to define it with a tilde code.  In this 
  850.      case, everything to the right of your code will appear 7 spaces out of 
  851.      alignment.  PopForm doesn't care, but you may have difficulty visual-
  852.      izing the form as you're constructing it.
  853.  
  854.           You'll notice that CHECK.FRM has a few lines that have missing 
  855.      border characters.  Those lines are to be combined with the lines 
  856.      immediately preceding or following them.  How?  Line Joining and Line 
  857.      Overwriting.  Line Overwriting allows your printer to over-print two 
  858.      or more lines of data on the same physical line on the paper.  Though 
  859.      your screen may show 2 or three separate lines, Line Overwriting al-
  860.      lows them all to be sent to the SAME line on your printer. 
  861.  
  862.           Line Overwriting may be imposed upon PopForm by the placing a 
  863.      ~\~ code at the end of a line.  When PopForm encounters ~\~ at the end 
  864.      of a line, it will immediately issue a carriage return, but no line 
  865.      feed, to the printer.  That will cause the following line to overwrite 
  866.  
  867.  
  868. PUTTING IT ALL TOGETHER                  15
  869.  
  870.  
  871.  
  872.  
  873.      the line containing ~\~. 
  874.  
  875.           When trying out complex forms that you're preparing, you'll often 
  876.      find that the printout contains blank lines that you hadn't anti-
  877.      cipated.  All you have to do is to place a ~\~ at the end of the line 
  878.      preceding an unwanted blank.  That will inform PopForm that a carriage 
  879.      return, but no line feed should be issued at the end of that line.
  880.  
  881.           If the form you're creating requires lines longer than 80 
  882.      characters, but your word processor or text editor doesn't permit 
  883.      them (as is the case with the FORMED program provided with PopForm), 
  884.      you'll need to "double up" by using the ~+~ code.  If ~+~ is encoun-
  885.      tered at the end of a line, PopForm will join that line with the one 
  886.      immediately following it.  As your form is being printed, PopForm will 
  887.      send NEITHER a line feed NOR carriage return after a line ending with 
  888.      ~+~.  Hence, the following line will be printed adjacent to (not over) 
  889.      the one containing ~+~.  Be sure never to use the ~+~ code in the mid-
  890.      dle of another code.  Though one tilde code may immediately follow 
  891.      another, PopForm does not allow codes-within-codes.
  892.  
  893.           By the way, you may FORCE PopForm to issue BOTH a carriage return 
  894.      AND a line feed if you place a ~<~ at the end of a line.  This feature 
  895.      is generally useful only if you're using Word Wrap (covered later).
  896.  
  897.           NOTE:
  898.                When using your word processor to look at a disk file 
  899.           created by PopForm, you may notice what appear to be many 
  900.           blank lines that you hadn't "programmed".  In many cases, 
  901.           these may not really be blank lines at all; your word pro-
  902.           cessor may simply be displaying a blank line wherever the 
  903.           file has a carriage return, even though that carriage return 
  904.           MIGHT NOT be accompanied by a line feed.  Don't worry.  When 
  905.           the file is actually printed, it'll probably look much bet-
  906.           ter.  Remember that the forms you create with PopForm might 
  907.           make liberal use of carriage returns without line feeds. 
  908.           
  909.  
  910.      - Missing Data
  911.  
  912.           Sometimes the data you're looking for won't be anywhere on the 
  913.      screen.  Look at LABEL.FRM, and you'll see that it consists of four 
  914.      name and address lines.  The third line instructs PopForm to look to 
  915.      the screen for the sequence, "Street: ".  That sequence, however, 
  916.      won't be followed by anything if TESTDATA is being displayed.  You 
  917.      might, therefore, expect PopForm to print LABEL.FRM with a blank third 
  918.      line.  
  919.  
  920.           But you'd probably prefer that PopForm omit the third line en-
  921.      tirely when the information being sought for inclusion thereon is mis-
  922.      sing.  Well, that's exactly what the program will do in this case.  
  923.      Why?  Because PopForm sees that next character following the keyword 
  924.      specification is "\".  Whenever PopForm encounters a "\" right after a 
  925.  
  926.  
  927. PUTTING IT ALL TOGETHER                  16
  928.  
  929.  
  930.  
  931.  
  932.      keyword or a screen coordinate, the program primes itself NOT to print 
  933.      the line if it cannot find what it's been told to find on the screen.   
  934.      Examples:
  935.  
  936.           ~("payee: ",10)~     - will send a line feed to the printer,
  937.                                  whether or not it finds something on the
  938.                                  screen immediately after "payee: "
  939.           ~("payee: "\,10)~    - will send a line feed to the printer,
  940.                                  ONLY IF PopForm finds something on the
  941.                                  screen immediately after "payee: "
  942.           ~(RC-0513\,10)~      - will send a line feed to the printer,
  943.                                  ONLY IF PopForm finds something at
  944.                                  row 05, column 13.
  945.  
  946.           For each line skipped while printing the body of a form, an extra 
  947.      line will be inserted at the end, thus ensuring correct spacing bet-
  948.      ween successive forms.
  949.  
  950.           It makes sense to use "\" only when there is only one item on a 
  951.      form line, that item being defined by a the tilde code containing "\".  
  952.      Never use "\" if the line contains ANYTHING other than a single tilde 
  953.      code sequence.  
  954.  
  955.  
  956.      - Comments
  957.  
  958.           When you want to place comments into your form, but you don't 
  959.      want them to print, begin each with ~{ and end each with }~.  This 
  960.      will allow you to make notes in each form about why you did such and 
  961.      such.  Example:
  962.  
  963.                ~{The following lines contain the client's address}~
  964.                
  965.      The line shown above will not be printed when the forms is prepared.  
  966.      A comment must always be the last (if not the only) item found on a 
  967.      line.
  968.  
  969.  
  970.      - Postponing Printing
  971.  
  972.           Normally, when you access PopForm, you will want a form printed 
  973.      at once.  Thus, when you type in the name of a form, printing normally 
  974.      begins immediately.
  975.  
  976.           But it may occasionally be more convenient for you to grab data 
  977.      from one screen, then another, then another (and so on), AND THEN beg-
  978.      in printing.  This may be accomplished in two different ways. 
  979.  
  980.           One is for you to simply press ALT-P until "PCUE" (the PrintCUE) 
  981.      appears in the upper right corner of PopForm's screen.  If you do this 
  982.      before you select a form to "print", all output will be directed, not 
  983.      to the printer, but to the PrintCUE.  Once you've sent your last form 
  984.  
  985.  
  986. PUTTING IT ALL TOGETHER                  17
  987.  
  988.  
  989.  
  990.  
  991.      to the PrintCUE, press Ctrl-P to actually print all the stuff you've 
  992.      been saving up.
  993.  
  994.           The other way to postpone printing is for you to place the SENDTO 
  995.      code into your form.  Example:
  996.  
  997.                               ~SENDTO myfile~
  998.                               This goes to the "myfile" file
  999.                               ~SENDTO LPT3~
  1000.                               This goes to the printer 
  1001.  
  1002.      When PopForm encounters the top line's code, it will immediately re-
  1003.      direct its output to the "myfile" file, instead of to the printer.  
  1004.      The next line would, therefore, be sent to "myfile".  The third line, 
  1005.      however, directs PopForm to begin printing again (through port LPT3, 
  1006.      in this case).
  1007.  
  1008.           After using the SENDTO code, PopForm will assume that, when you 
  1009.      press Ctrl-P, you will want to print the file specified by SENDTO, not 
  1010.      the standard PrintCUE.
  1011.  
  1012.  
  1013.      - Multi-screen Forms
  1014.  
  1015.           You may occasionally have forms that pull their data from two or 
  1016.      more screens.  Therefore, PopForm needs a facility to allow you to 
  1017.      temporarily exit, call up another screen, and then resume processing 
  1018.      the form.  ~NEWSCREEN x~ is the answer.  It tells PopForm to display 
  1019.      message x, wait for you to press a key, and then temporarily exit.  
  1020.      After you've called up another screen of data and pressed PopForm's 
  1021.      hotkey, the program will pick up where it had left off just before 
  1022.      exiting.  If x is missing, PopForm will exit without displaying a mes-
  1023.      sage or waiting for you to press a key.  Examples:
  1024.  
  1025.           ~NEWSCREEN~
  1026.           ~NEWSCREEN "Press ENTER, get new screen, and come back"~
  1027.  
  1028.           The first line would cause PopForm to exit without displaying a 
  1029.      message.  The second line would display the message in quotes, wait 
  1030.      for either the ENTER or ESC key to be pressed, and then exit.  If you 
  1031.      pressed the ESC key, PopForm would exit without expecting you to call 
  1032.      up another screen; when you pressed the hotkey again, PopForm WOULD 
  1033.      NOT pick up where it left off.  The ESC key, therefore, allows you to 
  1034.      break out of a repetitive cycle.  
  1035.  
  1036.  
  1037.      - Centering
  1038.  
  1039.           If you want the data picked off the screen to be centered on the 
  1040.      printed page, you may find the ~CENTER x~ code useful.  When PopForm 
  1041.      encounters that code, it primes itself to center ALL data picked off 
  1042.      the screen until it encounters a ~CENTER OFF~ code.  x is the column 
  1043.  
  1044.  
  1045. PUTTING IT ALL TOGETHER                  18
  1046.  
  1047.  
  1048.  
  1049.  
  1050.      on which the data will be centered.
  1051.  
  1052.  
  1053.      - Margins
  1054.  
  1055.           PopForm normally sends to the printer exactly what is contained 
  1056.      in the form being printed.  If you'd like PopForm to add margins of 
  1057.      its own, you should use the ~MARGINS t,l,b,r~ code.  t,l,b, and r are 
  1058.      not really margins at all.  Rather, they are the top, left, bottom, 
  1059.      and right lines and columns at which printing will begin and end.
  1060.  
  1061.           t is the line on which you wish to begin printing on each page.  
  1062.      l is the column at which you want to begin printing each line.  b is 
  1063.      the line to which you wish to continue printing each page before a new 
  1064.      sheet is automatically fed.  r is the approximate column to which you 
  1065.      wish to continue printing each line if you're using Word Wrap.
  1066.  
  1067.           t and b must be numbers between 1 and 255.  l and r should be 
  1068.      between 1 and the maximum number of columns your printer is set to 
  1069.      print, minus 5.  For example, if you printer is in 80-column mode, r 
  1070.      must be no more than 75.  Remember, r has no effect unless Word Wrap 
  1071.      is ON.
  1072.  
  1073.           PopForm's defaults are: t=1, b=255, l=1, and r=255.  If you des-
  1074.      ignate a zero for any of these items, PopForm will assume that item to 
  1075.      be unimportant and reset it to its default value.  When a default val-
  1076.      ue is set, PopForm gives up control over that item.
  1077.  
  1078.  
  1079.      - Headers and Footers
  1080.  
  1081.           If you want each page to have a header or footer, use the 
  1082.      ~HD x,y~ or ~FT x,y~ code.  y is the header or footer you want printed 
  1083.      at the top or bottom of each page, and x is the minimum number of 
  1084.      blank lines you need between the header of footer and the rest of the 
  1085.      text on the page.  If you want a page number printed within the header 
  1086.      of footer, use the # character.  The maximum number of characters 
  1087.      allowed in a header or footer is 74.  Example:
  1088.  
  1089.                                  ~FT 3,Page #~ 
  1090.  
  1091.      This will cause PopForm to place a footer at the bottom of each page, 
  1092.      three lines below the main text that's printed.  If the page being 
  1093.      printed were page 21, the footer would say, "Page 21".
  1094.  
  1095.  
  1096.      - Word Wrap
  1097.  
  1098.           Sometimes, the information to be grabbed from the screen and 
  1099.      placed into the form being printed will not be of a predictable 
  1100.      length.  That might make creating a form difficult, since you may not 
  1101.      know how much space to allocate to variable-length data.
  1102.  
  1103.  
  1104. PUTTING IT ALL TOGETHER                  19
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.           Word wrap may help you here.  When it's turned on, PopForm will 
  1111.      completely ignore all line feeds contained in the form.  Instead, 
  1112.      PopForm will decide for itself when it needs to skip down to the 
  1113.      next line.  In order for this to work, you should place a ~MARGINS 
  1114.      t,l,b,r~ code just before turning on Word Wrap with the ~WRAP ON~ 
  1115.      code.  If you don't, PopForm will consider the left margin to be 1 and 
  1116.      the right one to be 255.  
  1117.  
  1118.           To turn Word Wrap off, place a ~WRAP OFF~ code into the form at 
  1119.      the appropriate place.  If you want to change margins at that point, 
  1120.      you should place a ~MARGINS t,l,b,r~ code right after it.
  1121.  
  1122.           Word Wrap's operation is fairly straightforward.  When the line 
  1123.      that PopForm is printing comes within 9 characters of the right margin 
  1124.      you've designated, it begins looking for a blank space or hyphen.  As 
  1125.      soon as one is encountered, PopForm sends a carriage return and line 
  1126.      feed to the printer.  If no blank space or hyphen is encountered be-
  1127.      fore the line is 5 characters LONGER than the right margin you speci-
  1128.      fied, PopForm will arbitrarily break the word and insert a hyphen.  
  1129.      Therefore, PopForm may occasionally break long words (>14 characters) 
  1130.      at awkward points.  So, don't use big words too often in the forms 
  1131.      that PopForm will print.
  1132.  
  1133.           Remember, PopForm ignores all line feeds contained in the form 
  1134.      it's printing under Word Wrap's control.  So how can you FORCE PopForm 
  1135.      to issue a line feed and carriage return, despite the fact that Word 
  1136.      Wrap is on?  Answer:  the ~<~ code.  Just place a ~<~ wherever you 
  1137.      want.  For example, if you want a blank line between paragraphs, each 
  1138.      paragraph should be preceded by two ~<~ codes.  Take a look at 
  1139.      LETTER.FRM to see how these codes are used.
  1140.  
  1141.  
  1142.      - Printer Codes
  1143.  
  1144.           There may be times when you need to switch from 1/6" to 1/8" 
  1145.      spacing, and back.  You may need to change fonts in the middle of a 
  1146.      page, or even in mid-line.  Or you may occasionally need to underline 
  1147.      what's printed.  In order to handle these changes, you'll have to 
  1148.      utilize PopForm's special printer control tilde codes.  And, of 
  1149.      course, you'll also have to be familiar with the decimal code se-
  1150.      quences recognized by your printer. 
  1151.  
  1152.           If you want to place printer control codes into your forms, enter 
  1153.      each as a series of 3-digit numbers.  Each such sequence must begin 
  1154.      with "~PRINTCODE ", and end it with a tilde.  Assume that the con-
  1155.      trol code you want to send your printer is "27 69" (ESC E).  To send 
  1156.      that code, you should actually place into your form this character 
  1157.      sequence:
  1158.  
  1159.                               ~PRINTCODE 027069~
  1160.   
  1161.  
  1162.  
  1163. PUTTING IT ALL TOGETHER                  20
  1164.  
  1165.  
  1166.  
  1167.  
  1168.      Note that "027069" is used, not "2769", "27 69" or "27,69".  Use se-
  1169.      quences consisting of three-digit numbers only.  See CHECK.FRM for an 
  1170.      example of this code sequence.  The control code sent by CHECK.FRM is 
  1171.      designed to place an Epson-compatible printer into the proper mode to 
  1172.      print IBM graphic characters.
  1173.  
  1174.  
  1175.      - Graphics
  1176.  
  1177.           You may occasionally need to place graphics symbols into your 
  1178.      form.  Though this may be an unfamiliar chore, you'll find your word 
  1179.      processor fully capable of handling it.  The trick is to figure out 
  1180.      how, so dig out that manual and look.  
  1181.  
  1182.           Some word processors will display graphics symbols as odd-looking 
  1183.      characters.  Don't worry, when they're printed out, they'll look just 
  1184.      fine -- assuming, of course, that your printer has been placed into its 
  1185.      graphics printing mode.  Some printers can't handle graphics at all.  
  1186.      Some will print graphics in their default modes.  And others, like the 
  1187.      Epson-compatibles, are capable of graphics, but need to be given the 
  1188.      proper command to go into that mode.  That's why CHECK.FRM's first 
  1189.      line contains a printer control code sequence to place Epson-compat-
  1190.      ible printers into graphics mode.
  1191.  
  1192.  
  1193.      - Date, Day of Week, Time
  1194.  
  1195.           If your form contains ~DATE~, ~WEEKDAY~, or ~TIME~, the compu-
  1196.      ter's current date, day of the week, or time will be be substituted at 
  1197.      the appropriate spot on the form as it prints.
  1198.  
  1199.  
  1200.      - Keeping up with Totals
  1201.  
  1202.           PopForm will print any number you wish, whether it's contained in 
  1203.      the form being printed or on the screen.  But what if you need the 
  1204.      program to keep tabs on running totals that accumulate during the 
  1205.      processing of many screens'-worth of data?  That's what the NUMx 
  1206.      variables are for.  There are nine of them, NUM1...NUM9.  They are all 
  1207.      set to zero with each new form that you prepare.  From that starting 
  1208.      point, each can be adjusted as you wish by performing mathematical 
  1209.      operations on it.  And each can be printed easily.  Here are some 
  1210.      examples:
  1211.  
  1212.                ~NUM1+10~       adds 10 to NUM1
  1213.                ~NUM2*3~        multiplies NUM2 by 3
  1214.                ~NUM8/4~        divides NUM8 by 4
  1215.                ~NUM8-NUM4~     subtracts NUM4 from NUM8 and keeps the
  1216.                                result in NUM8
  1217.                ~NUM5~          prints NUM5
  1218.                ~NUM5CC~        clears NUM5 (reduces it to zero)
  1219.  
  1220.  
  1221.  
  1222. PUTTING IT ALL TOGETHER                  21
  1223.  
  1224.  
  1225.  
  1226.  
  1227.      What about ~NUM5=90~?  That won't work!  To give NUM5 a value of 90, 
  1228.      you should use two operations: ~NUM5CC~~NUM5+90~.  The first reduces 
  1229.      NUM5 to zero, and the next adds 90 to it.
  1230.  
  1231.           If no mathematical operation is designated, the tilde code con-
  1232.      taining a NUMx variable tells PopForm to simply print the variable; 
  1233.      otherwise, PopForm is being told to perform an operation.  When per-
  1234.      forming mathematical operations the first operator must always be the 
  1235.      NUMx variable.
  1236.  
  1237.           The precision with which NUMx variables will be printed may be 
  1238.      set with the DECIMALS code.  Examples
  1239.           
  1240.                ~DECIMALS 3~     causes PopForm to NUMx variables to 3                            
  1241.                                 decimal places
  1242.                ~DECIMALS 0~     no decimal places will be printed.
  1243.  
  1244.      PopForm's default is DECIMALS 2.
  1245.  
  1246.  
  1247.      - Alphanumeric variables
  1248.  
  1249.           PopForm will print any alphanumeric string you wish, whether it's 
  1250.      contained in the form being printed or on the screen.  But what if you 
  1251.      need the program to remember a particular word or phrase and manipu-
  1252.      late it later.  That's what the WRDx variables are for.  There are 
  1253.      nine of them, WRD1...WRD9.  They all start out blank when you begin 
  1254.      preparing a form.  From that starting point, each can be adjusted as 
  1255.      you wish by performing basic operations on it.  And each can be prin-
  1256.      ted easily.  Here are some examples:
  1257.  
  1258.                ~WRD1+"hello"~  adds "hello" at the end of WRD1
  1259.                ~WRD1-"hello"~  deletes "hello" from WRD1
  1260.                ~WRD5~          prints WRD5
  1261.                ~WRD5CC~        clears WRD5 (makes WRD5 blank)
  1262.  
  1263.      What about ~WRD5="hello"~?  That won't work!  To make WRD5 equal to 
  1264.      "hello", you should use two operations: ~WRD5CC~~WRD5+"hello"~.  The 
  1265.      first makes WRD5 blank, and the next adds "hello" to it.
  1266.  
  1267.           If no operation is designated, the tilde code containing a WRDx 
  1268.      variable tells PopForm to simply print the variable; otherwise, Pop-
  1269.      Form is being told to perform an operation.  When performing opera-
  1270.      tions the first operator must always be the WRDx variable.
  1271.  
  1272.  
  1273.      - Feeding a new sheet of paper
  1274.  
  1275.           Whenever PopForm encounters the code, ~NEWPAGE~, it will send 
  1276.      your printer the form feed command.  If you want a new page to be fed 
  1277.      only if the last line printed is within x lines of the bottom "margin" 
  1278.      (see the Margins section above), the code should be, ~NEWPAGE x~, 
  1279.  
  1280.  
  1281. PUTTING IT ALL TOGETHER                  22
  1282.  
  1283.  
  1284.  
  1285.  
  1286.      where x is a number.
  1287.  
  1288.  
  1289.      - Pausing for keyboard entry     
  1290.  
  1291.           If, in the middle of a form, you want PopForm to ask you 
  1292.      something, use the INPUT code.  Whatever you enter at the keyboard 
  1293.      will be placed into the printout.  Consider the a form consisting of 
  1294.      one line:
  1295.  
  1296.                ~TIME~, ~DATE~         ~INPUT "Your Name: "~
  1297.  
  1298.      In this example, PopForm would print the computer's time and date.  
  1299.      Then, it would print several blank spaces, pause, and display the 
  1300.      phrase, "Your Name: ", on the screen.  When you entered your name, 
  1301.      PopForm would print it at the point at which it had just paused.  If 
  1302.      the command had been ~[20]INPUT "Your Name: "~, PopForm would have 
  1303.      printed the first 20 characters of your name (if you name were fewer 
  1304.      than 20 characters, PopForm would have padded it with spaces).
  1305.  
  1306.           The phrase you specify with the INPUT code will be displayed on 
  1307.      the third line of the PopForm window.  If a one-line phrase isn't 
  1308.      enough, you should use the ~WRITELN x~ code just before INPUT.  
  1309.      WRITELN will display phrase x on the first line of the window, unless 
  1310.      that line has already been filled by a previous WRITELN instruction 
  1311.      (in which case phrase x will be displayed on the second line).  By 
  1312.      placing two WRITELN codes just before an INPUT code, you can display a 
  1313.      three-line prompt.
  1314.  
  1315.  
  1316.      - Printing another file
  1317.  
  1318.           When PopForm encounters the code, ~FILE x~, it will cease 
  1319.      printing the current form and begin printing file x.  Example:
  1320.  
  1321.                             ~FILE 2d.fil~
  1322.  
  1323.      This code would tell PopForm to immediately find the file named, 
  1324.      "2D.FIL" and begin printing it.  If one file sends PopForm to another, 
  1325.      the only way to get back is to have the second file send PopForm back 
  1326.      to the first.
  1327.  
  1328.  
  1329.  
  1330.  
  1331.  
  1332.  
  1333.  
  1334.  
  1335.  
  1336.  
  1337.  
  1338.  
  1339.  
  1340. PUTTING IT ALL TOGETHER                  23
  1341.  
  1342.  
  1343.  
  1344.  
  1345.      FOR PROGRAMMERS ONLY
  1346.  
  1347.           PopForm has some simplistic programming features that allow it to 
  1348.      react to certain conditions.  Let's assume that you want the program 
  1349.      to read the character at a certain screen location and compare it to a 
  1350.      character that you define.  If the characters match (or DON'T match, 
  1351.      if you prefer), you can have PopForm stop printing, skip down to a 
  1352.      certain line (identified by a LABEL), and then continue printing.
  1353.  
  1354.           All this can be done by using IF in conjunction with the GOTO, 
  1355.      GOSUB..RETURN, and DO..UNTIL, tilde codes.  This version of PopForm 
  1356.      allows GOSUBs and DO loops to be nested up to three levels deep.
  1357.  
  1358.           You may notice that, as PopForm is sending a form to the printer, 
  1359.      it's pop-up box rapidly flashes on and off.  What's happening is this:  
  1360.      When a GOTO, GOSUB, or DO statement is being executed, PopForm needs 
  1361.      to move to different locations in the form.  As it does so, it dis-
  1362.      plays a message explaining what it's doing.  When it finds the proper 
  1363.      location, the screen is cleared, so that PopForm may read it.  All 
  1364.      this may happen very quickly, especially if PopForm is working with 
  1365.      small files.   If, for some reason, PopForm can't find the proper loc-
  1366.      ation, it will appear to "hang up".  In this case, all you normally 
  1367.      have to do is to press the ESC key.  Then, look at the file that Pop-
  1368.      Form was accessing and try to fix it's programming logic.
  1369.  
  1370.  
  1371.      - Labels
  1372.  
  1373.           Labels mark important points in your file.  They can be of great 
  1374.      benefit when used in conjunction with the IF, GOTO, and GOSUB state-
  1375.      ments.  If, for instance, certain characters or values appear on your 
  1376.      screen, you might want PopForm to skip to a certain point in the file 
  1377.      and resume printing.  If the screen contains other data, you might 
  1378.      want to skip to another section (or even to another file, altogether).  
  1379.  
  1380.  
  1381.      - IF statements
  1382.  
  1383.           IF statements do comparisons.  When PopForm encounters an IF 
  1384.      statement, it reads the string of characters between the "IF" and the 
  1385.      comparison expression ( =, <, >, or <> ).  It makes the appropriate 
  1386.      comparison between that string and the string of characters following 
  1387.      the comparison expression.  If, and only if, the comparison is true 
  1388.      (eg: equal, if you specify =, or not equal if you specify <>), the 
  1389.      NEXT FOLLOWING tilde code will be executed.  If the comparison is not 
  1390.      true (eg: not equal if you specify =, or equal if you specify <>), the 
  1391.      following tilde code will be SKIPPED.  Examples:
  1392.  
  1393.           ~IF 1=NUM2~~GOTO END~   Now is the time...     
  1394.                                     If NUM2=1, then PopForm will go to
  1395.                                     the position in the form identified
  1396.                                     by an END label (~LABEL END~).  Other-
  1397.  
  1398.  
  1399. FOR PROGRAMMERS ONLY                     24
  1400.  
  1401.  
  1402.  
  1403.  
  1404.                                     wise, it will continue on to print,
  1405.                                     "   Now is the time...". 
  1406.  
  1407.           ~IF "david"<>(RC-0512,5)~~GOSUB DAVE~  
  1408.                                     If the five characters located at 
  1409.                                     screen coordinates 0512 do not match
  1410.                                     "david", then PopForm will execute the
  1411.                                     subroutine beginning at ~LABEL DAVE~.
  1412.                                     (see the GOSUB discussion below) 
  1413.  
  1414.           ~IF ESC=NEWSCREEN "Press a Key: "~~GOTO END~  
  1415.                                     If, when the NEWSCREEN function was 
  1416.                                     displaying, "Press a Key: ", you 
  1417.                                     pressed the ESC key, PopForm would go 
  1418.                                     to the END label.
  1419.  
  1420.           If the first string of characters to be compared is a number, 
  1421.      PopForm will attempt numerical comparison.  If it's a date, it will 
  1422.      attempt to compare dates.  Otherwise, it will compare words or phrases 
  1423.      (ignoring capitalization).  PopForm recognizes dates in only three 
  1424.      formats, demonstrated as follows:
  1425.  
  1426.           12 September 1992:    12 SEP 92 (day month year)
  1427.                                           (use first 3 letters of month)
  1428.                                 9/12/92   (month/day/year) 
  1429.                                 9-12-92   (month-day-year)
  1430.  
  1431.  
  1432.           Whenever PopForm encounters an IF statement, it knows that it 
  1433.      needs to perform a comparison of TWO, and ONLY TWO items.  If one of 
  1434.      the things to be compared is a known quantity (such as the ESC key, or 
  1435.      a particular word or number for which you're looking), that item must 
  1436.      appear to the LEFT of the operator ( =, <>, <, > ).  The variable 
  1437.      against which you're comparing the known quantity must always be to 
  1438.      the right of the operator.  If two variables are being compared, place 
  1439.      to the left of the operator the one that does NOT require PopForm to 
  1440.      pick data from the screen or from your keyboard.  If both (or neither) 
  1441.      items are variables requiring keyboard or screen scanning, the order 
  1442.      is not important.  Finally, any attempt to compare items that can't 
  1443.      logically be compared may have unpredictable results.
  1444.  
  1445.  
  1446.      - GOSUB routines
  1447.  
  1448.           When PopForm encounters ~GOSUB x~ code, it immediately finds the 
  1449.      position in the file identified as ~LABEL x~.  It executes everything 
  1450.      between that point and the next ~RETURN~ code.  Then, it returns to the
  1451.      spot in the file just following the ~GOSUB x~ code and continues its 
  1452.      way through the file.  Example:
  1453.  
  1454.                     This is the beginning.
  1455.                     ~GOSUB FILLER~
  1456.  
  1457.  
  1458. FOR PROGRAMMERS ONLY                     25
  1459.  
  1460.  
  1461.  
  1462.  
  1463.                     And now I'm done.
  1464.                     ~GOTO END~              
  1465.                     ~LABEL FILLER~
  1466.                     Here's some filler material.
  1467.                     Now, I'll return.
  1468.                     ~RETURN~
  1469.                     ~LABEL END~
  1470.  
  1471.      This sequence would cause the following to be printed:
  1472.                     
  1473.                     This is the beginning.
  1474.                     Here's some filler material.
  1475.                     Now, I'll return.
  1476.                     And now I'm done.
  1477.  
  1478.  
  1479.      - DO loops
  1480.  
  1481.           Each DO loop maintains its own counter, which is initialized at 
  1482.      a value of one when the DO loop begins execution.  Whenever PopForm 
  1483.      encounters a ~DO~ code, it will continue its work until it reaches an 
  1484.      ~UNTIL COUNT x~ code.  Then, it will increase its counter by 1 and 
  1485.      compare that value against x.  If the counter is less than or equal to 
  1486.      x, PopForm will then go to ~DO~ code and begin the process again.  
  1487.      When the counter is finally greater than x, PopForm will break out of 
  1488.      the DO loop.
  1489.  
  1490.           As DO loops are processing, you may ask PopForm to do certain 
  1491.      things, depending upon what the counter's current value is.  Just use 
  1492.      an IF code to do so.  Example:
  1493.  
  1494.           ~IF 2=COUNT~~GOTO TWO~...counter not equal to 2    
  1495.                                       If the counter's value is 2, PopForm 
  1496.                                       will skip immediately to the file 
  1497.                                       position identified by ~LABEL TWO~; 
  1498.                                       otherwise, it will print,"...counter
  1499.                                       not equal to 2".
  1500.  
  1501.      Note that COUNT must always be the SECOND value compared, never the 
  1502.      first.  You may execute GOSUB routines that are outside the DO loop, 
  1503.      but all GOTO's contained within a DO loop must refer to labels that 
  1504.      are also within the DO loop.
  1505.  
  1506.  
  1507.      - Programming Example
  1508.  
  1509.           Programming is potentially an extremely frustrating endeavor.  
  1510.      You'll undoubtedly have to do a lot of trial and error work when you 
  1511.      work on even mildly complicated forms.  But if you stick with it, 
  1512.      you'll be glad that you did. 
  1513.  
  1514.           Take a look at PROGRAM.FRM, FEDEX.FRM, and WILL.FRM.  Copy them 
  1515.  
  1516.  
  1517. FOR PROGRAMMERS ONLY                     26
  1518.  
  1519.  
  1520.  
  1521.  
  1522.      to into files with different names and have fun experimenting with the 
  1523.      copies.  Also copy TESTDATA and WILLDATA to other files, so that you 
  1524.      can experiment with them, too.  Be sure to use only an ASCII-type 
  1525.      editor, or you'll be wasting your time.
  1526.  
  1527.  
  1528.  
  1529.  
  1530.  
  1531.  
  1532.  
  1533.  
  1534.  
  1535.  
  1536.  
  1537.  
  1538.  
  1539.  
  1540.  
  1541.  
  1542.  
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548.  
  1549.  
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.  
  1561.  
  1562.  
  1563.  
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572.  
  1573.  
  1574.  
  1575.  
  1576. FOR PROGRAMMERS ONLY                     27
  1577.  
  1578.  
  1579.  
  1580.  
  1581.      PREPARING LONG FORMS
  1582.  
  1583.           First, write your form without any codes.  When it's done, go 
  1584.      through it again, this time substituting codes where appropriate.  
  1585.  
  1586.           If the form has lots of variables to be plugged in by PopForm, it 
  1587.      is recommended that you direct PopForm to use Word Wrap.  Turn it on 
  1588.      and set your margins at the beginning of the form.  And be sure to use 
  1589.      the ~<~ code wherever you REQUIRE a line feed and carriage return; 
  1590.      otherwise, PopForm will try to place everything into the same para-
  1591.      graph.
  1592.  
  1593.           As you write your form with your word processor, make sure that 
  1594.      you don't break words with hyphens at the end of lines.  When PopForm 
  1595.      sends the form to the printer, each line containing a variable my end 
  1596.      up with a length different from what you had anticipated.  A word 
  1597.      that you had originally broken with a hyphen at the end of a line may 
  1598.      end up in the middle of a line on the printed sheet.
  1599.  
  1600.  
  1601.  
  1602.  
  1603.  
  1604.  
  1605.  
  1606.  
  1607.  
  1608.  
  1609.  
  1610.  
  1611.  
  1612.  
  1613.  
  1614.  
  1615.  
  1616.  
  1617.  
  1618.  
  1619.  
  1620.  
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626.  
  1627.  
  1628.  
  1629.  
  1630.  
  1631.  
  1632.  
  1633.  
  1634.  
  1635. PREPARING LONG FORMS                     28
  1636.  
  1637.  
  1638.  
  1639.  
  1640.      COMMON ERRORS
  1641.  
  1642.      - Improper vertical spacing between lines.  This is particularly a 
  1643.      problem when you're creating a complicated form that uses lots of 
  1644.      programming logic.  The problem is that you aren't thinking through 
  1645.      the form's process well enough.  There may be places where PopForm 
  1646.      will issue a line feed when you don't want it to.  Locate those spots
  1647.      and place a ~\~ at the end of the line.  If PopForm ISN'T issuing 
  1648.      line feeds where you expect, use the ~<~ code at the end of each line 
  1649.      where you want the line feed.
  1650.  
  1651.      - Improper horizontal spacing on a line.  You probably haven't antici-
  1652.      pated the lengths of an item that PopForm will plug into the form.  
  1653.      As a result, subsequent printing on that line will not be aligned 
  1654.      properly.  Try using the ~\~ and ~+~ codes to join and overwrite 
  1655.      lines.  Make a test file to experiment with these codes.  Then, when 
  1656.      you understand how they work, place them into a "real" form.
  1657.  
  1658.      - Failure to place a tilde (~) at each end of a code.  This causes all 
  1659.      sorts of problems, as PopForm attempts to decipher everything between 
  1660.      two tildes.
  1661.  
  1662.      - Omission of the word LABEL from codes intended as labels.
  1663.  
  1664.      - Failure to end a subroutine (called by GOSUB) with a RETURN code.  
  1665.  
  1666.      - Failure to end a DO loop with an UNTIL statement.
  1667.  
  1668.      - Failure to follow each code's recommended syntax.
  1669.  
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682.  
  1683.  
  1684.  
  1685.  
  1686.  
  1687.  
  1688.  
  1689.  
  1690.  
  1691.  
  1692.  
  1693.  
  1694. COMMON ERRORS                            29
  1695.  
  1696.  
  1697.  
  1698.  
  1699.      CUSTOMIZING POPFORM
  1700.  
  1701.           To customize PopForm, you need to load the program by entering 
  1702.      the following at the DOS prompt:
  1703.           
  1704.                              PopForm $08xxxx
  1705.  
  1706.      where each "x" represents a letter or number, as explained in the 
  1707.      following sections.
  1708.  
  1709.           Note that you need to make this special entry only once.  From 
  1710.      then, on, PopForm may be loaded merely by entering "PopForm" at the 
  1711.      DOS prompt.
  1712.  
  1713.      HOTKEY 
  1714.  
  1715.           PopForm's default hotkey is ALT-F.  To change it, substitute for 
  1716.      the third "x" the new key you wish to use in combination with the ALT 
  1717.      key.  Also substitute for the first two x's the scan code for that 
  1718.      key.  You'll need to consult with a DOS manual to find a complete list 
  1719.      of scan codes, but here are a few:  
  1720.  
  1721.                Q=10  W=11  E=12  R=13  T=14  Y=15  U=16  I=17  O=18  
  1722.                P=19  A=1E  S=1F  D=20  F=21  G=22  H=23  J=24  K=25  
  1723.                L=26  Z=2C  X=2D  C=2E  V=2F  B=30  N=31  M=32
  1724.  
  1725.      Example:  To make ALT-Q the hotkey, you should enter "PopForm 
  1726.      $0810Q..." at the DOS prompt.  Here, "Q" takes the place of the third 
  1727.      "x", and its scan code (10) takes the place of the first two.
  1728.  
  1729.           To use the CTRL key in place of the ALT key, substitute "$04" for 
  1730.      "$08".  The Left Shift key is $02, and Right Shift key is $01.
  1731.  
  1732.      COLORS
  1733.  
  1734.           You may designate the primary colors used by PopForm.  The fore-
  1735.      ground color's code substitutes for the fifth "x", while the back-
  1736.      ground is contained at the sixth position.  The color codes you may 
  1737.      use are: 
  1738.  
  1739.                 0 Black     1 Blue     2 Green   3 Cyan            
  1740.                 4 Red       5 Magenta  6 Brown   7 Light Gray      
  1741.  
  1742.  
  1743.      DEFAULT SETTING
  1744.  
  1745.      PopForm's default customizing instruction is, "$0821F70":
  1746.              21=the scan code of the F key used (with ALT) to invoke PopForm
  1747.              F =the F key
  1748.              7 =light gray (foreground color)
  1749.              0 =black (background)
  1750.  
  1751.  
  1752.  
  1753. CUSTOMIZING POPFORM                      30
  1754.                            THE "POWER OFFICE" LINE-UP
  1755.  
  1756. Each unique program in this series requires a hard disk-equipped IBM-compatible 
  1757. PC with 512K of memory.  The following paragraphs contain brief descriptions.
  1758.  
  1759.      BillPower  --> time & billing with totally integrated general ledger
  1760.      TickleX    --> the ultimate  in scheduling/planning/docket control
  1761.      MultiTrack --> TickleX's scheduling power, plus client management 
  1762.      MOE        --> pop-up time/work/expense log, scheduler, calculator,
  1763.                    phone directory, mini-data base, printer controller
  1764.                    (MOE ties in with BillPower & TickleX, if you wish)
  1765.      LitigeX    --> research/evidence organizer for litigation support
  1766.      Nifty      --> combination menu and pop-up help system
  1767.  
  1768.  
  1769. BILLPOWER and BILLPOWER PLUS
  1770.  
  1771.      BillPower is a system designed to relieve you of the drudgery involved  in 
  1772. billing.   In a nutshell, it will track the time you work on professional  mat-
  1773. ters,  keep up with your receipts and disbursements, and calculate  the  amount 
  1774. owed  by  each client.  And it will automatically prepare  informative  monthly 
  1775. statements  for all your clients.  
  1776.  
  1777.      Engineered exclusively for the small firm, this innovative software offers 
  1778. a  rare combination of power and ease of use at a fair price.  Unlike  programs 
  1779. that  attempt to electronically emulate ancient manual  accounting  procedures, 
  1780. BillPower  is designed to capitalize upon the power of your computer.   If  you 
  1781. are  an  "old hand" at bookkeeping, then open your mind to a  real-time  system 
  1782. which  immediately updates all balances at the time an entry is made; one  that 
  1783. does  not require periodic batch postings or annual close-outs; one  that  pro-
  1784. vides a convenient method for correcting erroneous entries; a system that never 
  1785. erases  old data in the interest of consolidation.  You'll find both  BillPower  
  1786. and BillPower Plus to be advanced products.
  1787.  
  1788.      --> BillPower ($100):  time, billing, & bookkeeping for firms  with  
  1789.          up to  three timekeepers -- includes bank  account  management,  
  1790.          income-expense reports, balance sheets, & several bill formats.
  1791.                 
  1792.      --> BillPower Plus ($150):  time,  billing, & bookkeeping for  firms 
  1793.          with up to fifteen timekeepers -- builds upon BillPower's   fea-
  1794.          tures,  adding the abilities to keep extensive indexed memos  on     
  1795.          any subject, maintain notes on thousands of people, conduct con-
  1796.          flict of interest checks, prepare mailing labels, and more. 
  1797.  
  1798.      BillPower   can prepare several types of reports.  Whenever  you   request  
  1799. one,  you will be presented with a screen listing the parameters by  which  you 
  1800. can choose the information to be included.  After you have selected the  appro-
  1801. priate   parameters,  BillPower will hunt through its data base  for   informa-
  1802. tion  meeting your specifications.  The report may be sent to the  screen,  the 
  1803. printer or to a disk file. 
  1804.  
  1805.      Finally, while other time and billing programs may offer "links" to exter-
  1806. nal accounting software, BillPower completely integrates its bookkeeping  func-
  1807. tions into the rest of the program.  In fact, BillPower Plus can simultaneously
  1808. update  affected G/L accounts (as well as a client's balance and  aged  receiv-
  1809. ables) at the time that a disbursement or receipt is entered.  This "real-time" 
  1810. approach to bookkeeping, virtually unprecedented in a time and billing program, 
  1811. saves you the time you would otherwise spend making duplicate G/L entries, pos-
  1812. ting transactions, and/or transferring files from one program to another.  With 
  1813. BillPower  Plus,  a SINGLE entry can handle all the updating that needs  to  be 
  1814. done.  No other program offers such a degree of integration.  NONE!
  1815.  
  1816.  
  1817.  
  1818.  
  1819. CUSTOMIZING POPFORM                      31
  1820. TICKLEX
  1821.  
  1822.      TickleX  ($50) is a tickler/calendar program that will keep track of  your 
  1823. appointments  and deadlines, print your itinerary at the beginning of each  day 
  1824. day,  keep  a "to-do" list, and chart the projected course of each  matter  you 
  1825. handle.   It will also schedule trips and vacations, print weekly  and  monthly 
  1826. calendars, and beep at you when you need to do something.  
  1827.  
  1828.      TickleX  is  unusual in its ability to dynamically link reminders  to  ap-
  1829. pointments and deadlines.  Assume, for example, that you have a very  important 
  1830. meeting  scheduled for 15 August.  As with other programs, you could  establish 
  1831. reminders  several days or weeks in advance to allow adequate  preparation  for 
  1832. the meeting.  For the purposes of this example, let's say that you have entered 
  1833. a  reminder  one week in advance and another two weeks in advance.   Now,  what 
  1834. happens if the meeting is moved forward one week to 22 August?  Again, all tic-
  1835. kler  programs  would  allow  you to reschedule  it.   But  TickleX  will  also 
  1836. automatically  update the two reminders, moving each one week forward in  order 
  1837. to maintain the original reminder intervals.  Other programs would require  you 
  1838. to  search  for each reminder, delete it, and then enter it  again  on  another 
  1839. date.  This TickleX exclusive is an absolute "must" for offices that have  fre-
  1840. quent schedule changes.
  1841.  
  1842.      TickleX  is also unique in the way it handles multi-day  events.   TickleX 
  1843. allows  you  to enter an event such as a week-long trip with  just  one  entry.  
  1844. Other  programs might require a separate entry to be made for each day  of  the 
  1845. trip.   If your trip plans change, you need change only a single entry  if  you 
  1846. have TickleX.
  1847.  
  1848.      TickleX  even has built-in project planning.  No fancy charts,  mind  you.  
  1849. Just a very simplistic means of linking and updating related events.  And  it's 
  1850. completely  integrated into the TickleX system.  All project updates are  auto-
  1851. matically incorporated into the same schedule that contains appointments, dead-
  1852. lines, vacations, etc.
  1853.  
  1854.      Add to these features an attractive user interface, the ability to  attach 
  1855. extensive  notes to each scheduled event, a number of other nice  touches,  and 
  1856. TickleX comes up a winner.  Whether you're an executive looking for a  powerful 
  1857. centralized  personnel  scheduler, a busy entrepreneur needing  an  easy-to-use 
  1858. tickler system, or a lawyer seeking the ultimate docket control software, Tick-
  1859. leX  is the program for you.  There isn't a more robust scheduler available  at 
  1860. any price.  At only $50, it's a steal.  
  1861.  
  1862.  
  1863. MULTITRACK
  1864.  
  1865.      MultiTrack  is the ideal client tracker and scheduler.  It integrates  the 
  1866. scheduling power of TickleX with the ability to track several thousand clients, 
  1867. companies, contacts, projects, or jobs.  Also included is a note-keeping module 
  1868. that will link memos to the dates and clients to which they apply.
  1869.  
  1870.      In addition to the expected name, address, phone, and contact information, 
  1871. each client record has space for six full lines of miscellaneous data and  nine 
  1872. USER-CUSTOMIZABLE  fields.  And each note kept in the Note-keeping  module  may 
  1873. contain up to seventeen lines of information.
  1874.  
  1875.      Because  MultiTrack is an integrated system, you can easily zip  from  one 
  1876. module  to another.  Assume, for instance, that you're looking at  Mr.  Smith's 
  1877. record, and you'd like to see everything (not just one or two items)  scheduled 
  1878. for him during the coming month.  A few keystrokes later, what you need will be 
  1879. displayed on your monitor or sent to your printer.  When you're finished  look-
  1880. ing  at the schedule, press a key to re-display Mr. Smith's record.  Notes  and 
  1881. logged events, income, and expenses are just as easily accessed.
  1882.  
  1883.  
  1884.  
  1885. CUSTOMIZING POPFORM                      32
  1886.      If  you're a sales representative, consultant, personal injury lawyer,  or 
  1887. anyone  else who needs to track clients, customers, or jobs, this is the  soft-
  1888. ware you've been waiting for.  Give it a try.
  1889.  
  1890.  
  1891. LITIGEX
  1892.  
  1893.      LitigeX  ($50) is a program designed to help you keep track  of  research, 
  1894. chronologies,  and evidence.  When you enter an item of research, you may  tell 
  1895. LitigeX such things as the source, page, and line number where that item can be 
  1896. found.  You may also enter an eleven-line summary of the item and indicate  the 
  1897. subject category into which the item falls. 
  1898.  
  1899.      A prime use of this program is to create printouts of research data,  sor-
  1900. ted  alphabetically  by subject abbreviation.  Another use is to keep  tabs  on 
  1901. documents  and other evidence (who sent it, who received it, its current  loca-
  1902. tion,  etc.).  It can also be used to prepare a chronological report of  a  se-
  1903. quence  of  events which may have been entered at random into  the  data  base.  
  1904. Finally,  it can scan depositions provided to you on disk in  industry-standard 
  1905. ASCII  format and transfer verbatim text directly from the depositions  to  its 
  1906. data base.
  1907.  
  1908.  
  1909. MOE
  1910.  
  1911.      MOE  ($50) is a handy "pop-up" program that contains a number of  features 
  1912. useful in a business environment.  It will:
  1913.  
  1914.      --> schedule upcoming events,  allowing  up to 20 alarms  per day;
  1915.      --> maintain a record of your expenses and the time you spend  wor-    
  1916.          king  on various projects; 
  1917.      --> provide a calculator with a 20-line "tape" and the  ability  to     
  1918.          transfer  results  to  your word processor  or  other  program;  
  1919.      --> provide a pop-up phone directory that will dial for you; 
  1920.      --> allow you to establish numerous mini-databases, such  as  to-do     
  1921.          lists, general ledger account numbers, etc.; and
  1922.      --> provide a convenient means of sending your  printer  the  codes     
  1923.          it needs to change fonts, margins, etc.
  1924.  
  1925.      Once  MOE  is installed (it needs 80K), it's instantly  available  at  the 
  1926. touch  of  a few keys.  It may be called up from within most  word  processors, 
  1927. spreadsheets, and other primary applications.  If you also happen to have Bill-
  1928. Power  and TickleX, you'll find that MOE ties in beautifully with them.   What-
  1929. ever appointments or deadlines you've scheduled with MOE will be  automatically 
  1930. picked up by TickleX, while BillPower will automatically take in the  services, 
  1931. expenses, and receipts you've logged with MOE.  TickleX and BillPower can  even 
  1932. assimilate entries made into MOE by users on other computers around the office.  
  1933. All you need to do is "OUTPUT" those entries to floppy disks, carry them to the 
  1934. central  computer that maintains the BillPower/TickleX data bases, and then  go 
  1935. through a simple "INPUT" routine.
  1936.  
  1937.  
  1938. NIFTY
  1939.  
  1940.      Nifty  ($50) is a unique program that may be used as either a pop-up  Help 
  1941. system or a DOS menu.  It combines an elegantly simple and attractive user  in-
  1942. terface  (much appreciated by the inexperienced user) with a consistent,  flex-
  1943. ible means of set-up (benefiting the system integrator). 
  1944.  
  1945.      As  a  Help system, Nifty can, at the touch of a key or two,  provide  the 
  1946. user  with  on-line assistance on any subject (assuming that  appropriate  help 
  1947. files  have been created by the person installing the system).  Since the  Help 
  1948. system is memory-resident, it may be accessed from within nearly any other  ap-
  1949.  
  1950.  
  1951. CUSTOMIZING POPFORM                      33
  1952. plication. 
  1953.  
  1954.      Simplicity is also the rule when Nifty is used as a Menu system.  A single 
  1955. keystroke can execute any program or read any file on the computer.  Some  menu 
  1956. systems may be easier to set up, but few provide such flexible  screen-creation 
  1957. facilities, and none are easier to use once they're installed.  With Nifty, you 
  1958. may "draw" your own menus and place into them any messages you desire.  You may 
  1959. use  either passwords or "security levels" to control access to sub-menus.  You
  1960. you may even set a timer to automatically execute any program at any time.
  1961.  
  1962.      As  a  Help system, Nifty uses about 50K of memory; as a Menu  system,  it 
  1963. requires  about 55K.  If you know a computer novice, you know a  candidate  for 
  1964. using this handy product.  And if you understand DOS paths and file extensions, 
  1965. you know enough to set up a Nifty Help or Menu system, yourself. 
  1966.  
  1967.  
  1968.  
  1969.  
  1970.  
  1971.  
  1972.  
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.  
  1986.  
  1987.  
  1988.  
  1989.  
  1990.  
  1991.  
  1992.  
  1993.  
  1994.  
  1995.  
  1996.  
  1997.  
  1998.  
  1999.  
  2000.  
  2001.  
  2002.  
  2003.  
  2004.  
  2005.  
  2006.  
  2007.  
  2008.  
  2009.  
  2010.  
  2011.  
  2012.  
  2013.  
  2014.  
  2015.  
  2016.  
  2017. CUSTOMIZING POPFORM                      34
  2018.